/**
 * pub topic name: turtle/cmd_vel
 * pub topic message type: geometry_msgs::Twist  机器人线速度、角速度.
*/
#include <ros/ros.h>
#include <geometry_msgs/Twist.h>

int main(int argc, char** argv) {
  // ROS节点初始化
  ros::init(argc, argv, "velocity_publisher");

  // 创建节点句柄
  ros::NodeHandle nh;

  // 创建一个Publisher，注册发布名为/turtle/cmd_vel的topic，消息类型为geometry_msgs::Twist,消息缓存队列长度为10
  ros::Publisher turtle_vel_pub = 
    nh.advertise<geometry_msgs::Twist>("/turtle1/cmd_vel", 10);

  // 设置休眠周期(频率)
  ros::Rate sleep_rate(10); // 10hz

  while (ros::ok()) {
    // 初始化geometry_msgs::Twist类型的话题消息
    geometry_msgs::Twist vel_msg;
    vel_msg.linear.x = 0.5;
    vel_msg.angular.z = 0.2;
    // 发布话题消息
    turtle_vel_pub.publish(vel_msg);
    // 输出日志
    ROS_INFO("Publishe turtle velocity command[x_linear:%.2f m/s, z_angular:%.2f rad/s]",
      vel_msg.linear.x, vel_msg.angular.z);
    // 休眠挂起让出CPU使用权一段时间
    sleep_rate.sleep();
  }

  return 0;
}

